home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-06-16 | 61.2 KB | 1,541 lines |
- % --- guide0.tex ---
- % FWEB reference guide. Included either by guide.tex (stand-alone guide)
- % or fwebman.tex (the complete user's manual).
- %
- \FWEB\ is available ^^[\>{FWEB}!obtaining]
- via anonymous guest \.{ftp} from Internet host
- \.{lyman.pppl.gov}, a Sun SparcStation running \Unix. Use binary mode to
- transfer a compressed \.{tar} file with a name like \.{fweb-1.30.tar.Z}.
- See the file \.{/pub/fweb/READ\_ME} for the current status, recent bug
- reports, and further instructions.
-
- For those without \.{ftp} access, it is possible to emulate the function
- of~\.{ftp}
- by sending a valid \.{ftp} session as a mail message to \.{bitftp@pucc.bitnet}.
- The requested files will be returned by mail, possible \.{uuencode}d and
- broken up into several parts if they are sufficiently long. A sample \.{ftp}
- session is
-
- {\codemode
- ftp lyman.pppl.gov
- cd /pub/fweb
- get READ_ME
- quit
- }
- \noindent To learn more about the \.{bitftp} service, send a message
- containing the single word ``\.{help}'' to the above address.
-
- To unpack the \.{tar} file, say
-
- {\codemode
- uncompress fweb-1.30.tar
- tar -xvf fweb-1.30.tar
- }
-
- A brief summary of the installation procedure can be found in the
- \.{READ\_ME.FWEB} file included in the subdirectory corresponding to the
- numbered release---e.g., \.{/pub/fweb/v1.30/READ\_ME.FWEB}. \Unix\ users
- should do the following:
-
- {\codemode
- cd fweb-1.30
- ./configure
- cd web
- make bootstrap
- make install
- }
-
- More detailed installation information can be found in the separate file
- \.{INSTALL\_FWEB.tex} ^^:\>{INSTALL\UL FWEB.tex}: included with the \FWEB\
- release in the \.{manual} subdirectory.
-
- \vfill\Eject
-
- % ------------------------------ SYNTAX SUMMARY ------------------------------
-
- \def\sectionbreak{\filbreak\bigskip}
-
- \appendix L: SYNTAX SUMMARY.[][19.12.20]
-
- ^^(syntax!summary(
- Here we summarize various of the important features of \FWEB.
- This material is intended to be for reference; please refer to the body of
- the user's manual for full details.
-
- ^^[syntax!summary]
- \parskip=0pt plus1pt
- \long\def\summarize#1#2#3\par#4\par{\par{%
- \def\[##1]{[\.{##1}]}\def\(##1){(##1)}%
- \def\snext{#3}
- \ifx\snext\empty\def\starttext{}
- \else\def\starttext{#3\medskip}\fi
- \subsubsection #1.\par\starttext
- \abovedisplayskip=0pt plus1pt
- $$\vbox{\halign{\quad\tt##\hfil&--- \
- \vtop{\hsize=#2\hsize\noindent\hang\strut\ignorespaces##\strut}\hfil\cr
- #4}}$$}}
-
- \def\Item{\itemitem{$\bullet$}}
-
- ^^{\>{WEB}!phases of}
- \summarize{The \FWEB\ processors}{0.7}
-
- FTANGLE & \It{Creates compilable code}.\endgraf
- \medskip
- \leftline{\bf Phase one:}^^{phase!1}
- \Item discards \TeX\ documentation;
- \Item tokenizes source;
- \Item expands~\.{@'\dots'}, \.{@"\dots"}, and \.{0b\It{binary}} (also
- \.{0\It{octal}} and \.{0x\It{hex}} in \Fortran);
- \Item stores code text in appropriate modules;
- \Item memorizes macro definitions (\.{@d} and~\.{@m}).\endgraf
- \medskip
- \leftline{\bf Phase two:}^^{phase!2}
- \Item outputs outer macro definitions (\.{@d});
- \Item outputs the unnamed module (\.{@a});
- \Item expands \WEB\ macros (\.{@m});
- \Item expands build-in macros;
- \Item translates \Ratfor\ statements.\endgraf
- \cr
- FWEAVE & \It{Typesets the documentation and code}.\endgraf
- \medskip
- \leftline{\bf Phase one:}^^{phase!1}
- \Item tokenizes and stores identifiers and module names;
- \Item collects cross-reference information (including processing~\.{@[}
- and~\.{@\`});
- \Item stores limbo text definitions (\.{@l});
- \Item collects information about overloaded operators~(\.{@v}) and
- identifiers~(\.{@W}).\endgraf
- \medskip
- \leftline{\bf Phase two:}^^{phase!2}
- \Item outputs limbo text;
- \Item outputs special \TeX\ macros for overloaded operators;
- \Item copies \TeX\ material directly to output;
- \Item treats material between vertical bars (\.{|\dots|}) as code to be
- typeset;
- \Item tokenizes and stores contents of each code section;
- \Item analyzes code syntax and converts to appropriate \TeX\ macros.\endgraf
- \medskip
- \leftline{\bf Phase three:}^^{phase!3}
- \Item typesets index and module cross-references;
- \Item writes table of contents.\endgraf
- \cr
-
-
- \def\Oname(#1,#2){\It{name}.#1 {\rm (}#2{\rm)}}
-
- \summarize{Files}{0.7} The \FWEB\ system works with a variety of files.
- File names have the form \It{[path]}\./\It{root}\It{[.ext]}. Here '\./'
- is called the \\{PREFIX\_END\_CHAR}. ^^:\>{PREFIX\UL END\UL CHAR}:
- Since it differs for various operating systems, it can be changed in
- \.{custom.h}.
- ^^{customizing!directory path specifications} ^^{\>{custom.h}}
- The character that initiates the file-name extension (normally a period)
- can be changed with the `\.{-E}'~command-line option. ^^{\={-e}{-E}}
-
- \subheading{Input files:}
- \It{null file}&The system sometimes reads from the null file. This name
- varies from system to system; the default can be defined in \.{custom.h},
- or it can be changed with the style-file parameter \.{null\_file}.
- ^^{file!null} ^^{customizing!null-file name}
- ^^{style file!vocabulary!\>{null\UL file}}\cr
- .fweb{\rm\ (or }fweb.ini{\rm)} & Initialization file; always in the
- \It{home} directory.
- ^^{directory!home}
- The basic file name can be overridden by the environment variable
- \.{FWEB\_INI}. ^^{\>{FWEB\UL INI}} (It can also be changed in \.{custom.h},
- although this is strongly discouraged.)\cr
- fweb.sty & Style file; in \It{current} directory ^^{directory!current}
- unless overridden by
- environment variable \.{FWEB\_STYLE\_DIR}. ^^{\>{FWEB\UL STYLE\UL DIR}}
- The basic name can be changed by
- the `\.{-z}'~option. ^^{\>{-z}} (It can also be changed in \.{custom.h},
- although this is strongly discouraged.)\cr
- \It{name}.web & Source code. (Alternative suffixes can be searched for
- automatically with the `\.{-e}'~option and the \.{ext.web} style-file entry.)
- ^^{\>{-e}} ^^{style file!vocabulary!\>{ext.web}}\cr
- \It{name}.ch & Change file. (Suffixes are treated as above, but see
- \.{ext.change}.)
- ^^{style file!vocabulary!\>{ext.change}}\cr
- \It{name}.hweb & Code included into \.{web} file with~\atcmd{i}. Include
- files are searched for in the path set by the environment variable
- \.{FWEB\_INCLUDES} ^^{\>{FWEB\UL INCLUDES}} ^^{path!for include files}
- and/or the \.{-I}~option; ^^{\={-i}{-I}}
- if that path is empty, then the current directory is searched. (Suffixes
- are treated as above, but see \.{ext.hweb}.) ^^{style
- file!vocabulary!\>{ext.hweb}}\cr
- \It{name}.hch & Change file for include file. (Suffixes are treated as
- above, but see \.{ext.hchange}.) ^^{style file!vocabulary!\>{ext.hchange}}\cr
- \subheading{Output files:}
- \It{name}.tex & Woven output; can be processed with either Plain \TeX\ or
- \LaTeX.\cr
- \noalign{\smallskip}
- CONTENTS.tex & Accumulates table-of-contents information written by
- \FWEAVE. (This name can be overridden by the style-file option
- \.{contents.tex}.)
- ^^{\>{CONTENTS.tex}} ^^{style file!vocabulary!\>{contents.tex}}\cr
- INDEX.tex & Stores indexing information written by \FWEAVE. (This name can
- be overridden by the style-file option \.{index.tex}.)
- ^^{\>{INDEX.tex}} ^^{style file!vocabulary!\>{index.tex}}\cr
- MODULES.tex & Stores module list written by \FWEAVE. (This name can be
- overridden by the style-file option \.{modules.tex}.)
- ^^{\>{MODULES.tex}} ^^{style file!vocabulary!\>{modules.tex}}\cr
- \noalign{\smallskip}
- \It{name.ext} & Compilable output file; see table below for the extension
- associated with each language.\cr
-
- \indent When the `\.{-e}'~option is in effect, ^^{\>{-e}}
- input file names that include no
- period are completed automatically according to the style-file entries
- listed in the following table:
- ^^:file name!extensions:
- $$\vbox{\offinterlineskip
- \halign{\vrule\vrule#&\strut\quad#\quad\hfil&\vrule#&\hfil\quad\tt#\quad\hfil
- &\vrule#&\hfil\quad\tt#\quad\hfil&\vrule\vrule#\cr\tablerule\tablerule
- &\It{Type of file}&&\It{Style-file entry}&&\It{Default}&\cr
- \tablerule\tablerule
- &\WEB\ file&&ext.web&&.web&\cr\tablerule
- &Change file&&ext.ch&&.ch&\cr\tablerule
- &Include file&&ext.hweb&&.hweb&\cr\tablerule
- &$\vcenter{\hbox{\strut Change file}\hbox{for include
- file\strut}}$&&ext.hch&&.hch&\cr \tablerule\tablerule
- }}$$
-
- The default extension for the file(s) output by \FTANGLE\ sometimes depends on
- whether the operating system is \Unix\ or not. (These defaults can be
- overridden by style-file parameters, as indicated.)
- ^^{extensions!file-name}
- ^^{style file!vocabulary!\>{suffix.C}}
- ^^{style file!vocabulary!\>{suffix.Cpp}}
- ^^{style file!vocabulary!\>{suffix.N}}
- ^^{style file!vocabulary!\>{suffix.N90}}
- ^^{style file!vocabulary!\>{suffix.K}}
- ^^{style file!vocabulary!\>{suffix.R}}
- ^^{style file!vocabulary!\>{suffix.R90}}
- ^^{style file!vocabulary!\>{suffix.X}}
- $$\vbox{\offinterlineskip
- \halign{\vrule\vrule#&\strut\quad#\quad\hfil&\vrule#
- &\quad\tt#\quad\hfil&\vrule#%
- &\hfil\quad\tt#\quad\hfil&\vrule#%
- &\hfil\quad\tt#\quad\hfil&\vrule\vrule#\cr\tablerule\tablerule
- &\hfil\It{Language}&&\hfil\It{Style-file
- entry}&&$\vcenter{\it\hbox{\strut \Unix}\hbox{default\strut}}$
- &&$\vcenter{\it\hbox{\strut Non-\Unix}\hbox{default\strut}}$&\cr
- \tablerule\tablerule
- &\tt C&&suffix.C&&.c&&.c&\cr\tablerule
- &\tt \Cpp&&suffix.Cpp&&.c++&&.cpp&\cr\tablerule
- &\tt FORTRAN--77&&suffix.N&&.f&&.for&\cr\tablerule
- &\tt FORTRAN--90&&suffix.N90&&.f&&.for&\cr\tablerule
- &\tt MAKE&&suffix.K&&.mk&&.mk&\cr \tablerule
- &\tt RATFOR--77&&suffix.R&&.f&&.for&\cr\tablerule
- &\tt RATFOR--90&&suffix.R90&&.f&&.for&\cr\tablerule
- &\tt TEX&&suffix.X&&.sty&&.sty&\cr\tablerule\tablerule
- }}$$
-
- \summarize{Environment variables}{0.7}
- Environment variables ^^{environment variables} in \Unix\ and logical names
- in VMS behave in the same way.
-
- FWEB\_INCLUDES &^^{\>{FWEB\UL INCLUDES}} Colon-delimited list (identical in
- format to the Unix C-shell \.{PATH} variable) of
- directories to search for include files. ^^{path!for include files}
- (One can append to this list by means of the \.{-I}~option.) ^^{\={-i}{-I}}
- ^^{environment variables!\>{FWEB}!\>{FWEB\UL INCLUDES}}
- \cr
- FWEB\_INI &^^{\>{FWEB\UL INI}} Name of the initialization file---e.g.,
- \.{fweb.ini}. If not defined, either \.{.fweb} or~\.{fweb.ini} is chosen,
- depending on the machine. The initialization file always resides in
- \.{\$HOME}. ^^{\>{.fweb}} ^^{\>{fweb.ini}}
- ^^{environment variables!\>{FWEB}!\>{FWEB\UL INI}}
- \cr
- FWEB\_STYLE\_DIR &^^{\>{FWEB\UL STYLE\UL DIR}} Directory in which style file
- resides---e.g., \.{\$HOME/fweb}. If not defined, the current directory is
- used.
- ^^{environment variables!\>{FWEB}!\>{FWEB\UL STYLE}}
- \cr
- HOME &^^{\>{HOME}} Name of the home directory. This variable should be
- defined by \Unix.
- ^^{environment variables!Unix!\>{HOME}}
- \cr
- TERM &^^{\>{TERM}} The terminal type. Defined by \Unix.
- ^^{environment variables!Unix!\>{TERM}}
- \cr
-
- \indent To change an environment variable, say, for example (in \Unix)
-
- {\codemode
- setenv FWEB_INCLUDES .:$HOME/fweb:/usr/xxx/stuff
- setenv FWEB_INI my_FWEB.ini
- \Par
- }
- \noindent For VMS, substitute ``\.{define}'' for ``\.{setenv}''.
- \medskip
- The built-in function \.{\_GETENV(\It{ENV})} expands to the value of the
- environment variable~\\{ENV}.
- ^^{environment variable!obtaining value of}
-
- \subsubsection Order of initial operations.
-
- \FWEB\ begins its processing by performing the following operations:
- ^^[processing!order of]
-
- {\narrower\newfeature
- \medskip
- \feature. Evaluate environment variables.
-
- \feature. Read initialization file \.{.fweb}.
-
- \feature. Execute \.{.fweb} options beginning with~'\.+'.
-
- \feature. Read and execute the command line.
-
- \feature. Execute remaining \.{.fweb} options.
-
- \feature. Read the style file \.{fweb.sty}.
-
- \feature. Process the \WEB\ file.
-
- }
-
- \def\arg#1{{\it[#1]}}
-
- \summarize{Command-line syntax}{0.7}
- ^^{syntax!command-line} ^^{command line!syntax}
- The command-line syntax is
- $$\left\{\matrix{\hbox{\FWEAVE}\cr\hbox{\FTANGLE}\cr}\right\}
- \hbox{ \It{web\_file\_name} [\It{change\_file\_name}] [\It{options}]}
- $$
- where the command-line options,
- ^^{options, command-line} ^^{command line!options}
- each of which must begin with a hyphen,
- are summarized below. (Actually, the options can appear before the file
- names, or can even be intermixed with them.) If an option has an argument,
- no space should precede the argument. (E.g., say ``\.{-zmy.sty}'', not
- ``\.{-z\ my.sty}''.) In the descriptions of the options,
- the letters~\.T or~\.W in brackets denotes to which
- processor the command applies; no brackets at all means it applies to both
- processor. Similarly, parenthesized~\.C, \.N, \.R, or~\.X denotes the
- applicable
- language. Italic brackets, as in \.{-d}\It{[nnnnn]}, indicate an optional
- argument; the brackets themselves shouldn't be typed. Stars mean the
- command is \It{not} allowed to be optionally changed along with a language
- change, according to the format `\atcmd{$l$[\It{options}]}' or
- `\atcmd{L$l$[\It{options}]}'.
-
- \par
-
- \summarize{Command-line options {\tt a}--{\tt q}}{0.7}
-
- -0 &^^{\>{-0}} Turn off \WEAVE's debugging mode. \[W].
- ^^{debugging!turning off}\cr
- -1 &^^{\>{-1}} Turn on brief debugging mode. (Display irreducible scraps.)
- \[W]. ^^{debugging!turning on!limited}\cr
- -2 &^^{\>{-2}} Turn on verbose debugging mode. (Display detailed reductions
- of the scraps.) \[W]. ^^{debugging!turning on!verbose}\cr
- -A &^^{\={-a}{-A}} Turn on \&{ASCII} translations. ^^{ASCII!turning on
- translations to}\cr
- -b &^^{\>{-b}} Number \&{do} and \&{if}~blocks in woven \Fortran\ and \Ratfor\
- output. \[W]. ^^{block numbers}\cr
- \lstar -c &^^{\>{-c}} Set the global language to~C. ^^{language!global!C}\cr
- \lstar -c++ &^^{\>{-c++}} Set the global language to~\Cpp.
- ^^{language!global!\Cpp}\cr
- -D\It{[letters]}&^^{\={-d}{-D}} Display information about reserved words of the
- current language (beginning with \It{letters} if present).
- ^^{reserved words!displaying}\cr
- -d\It{[nnnnn]} &^^{\>{-d}} Convert unnumbered `\.{do\dots enddo}'
- constructions to standard \Fortran--77. \[T]; \(N).
- ^^{\<{do}!numbering}\cr
- -E$c$ &^^{\={-e}{-E}} Change the delimiter of a file-name extension from the
- default~'\..' to~$c$.
- ^^{extensions!file-name!changing delimiter for}\cr
- -e &^^{\>{-e}} Turn on automatic file-name completion. (See discussion of
- the style file entries \.{ext.*}.) ^^{file name!automatic
- completion of}\cr
- -f &^^{\>{-f}} Turn off module references for identifiers. \[W].
- ^^{module!references!turning off}\cr
- \lstar -h &^^{\>{-h}} Get help from the command line. \It{(Not implemented
- yet.)} ^^{help!command line}\cr
- -I\It{directory} &^^{\={-i}{-I}} Append a directory or colon-delimited list
- of directories to the list of directories to be searched for include
- files. \cr
- -i &^^{\>{-i}} Read include files named by the \atcmd{I}~command, but
- do not print their contents. \[W]. ^^{file!including!not
- printing}\cr
- -i! &^^{\>{-i"!}} Don't even read include files named by the
- \atcmd{I}~command. \[W]. \cr
- \lstar -L\It{l} &^^{\={-l}{-L{\it l}}} Select global language: $l \in
- \{\.c,\.n,\.r,\.x\}$.
- ^^{language!selecting}\cr
- -l\It{[mmm[:nnn]]} &^^{\>{-l}} Echo the input line constructed by the
- input driver between lines~\It{mmm} and~\It{nnn}.
- ^^{debugging!echoing input lines}\cr
- \lstar -m\It{id[=text]} &^^{\>{-m}} Define a \WEB\ macro. \[T]. \cr
- -m4 &^^{\>{-m4}} Understand the \.{m4} built-in commands. \[W].
- ^^{\>{m4}!understanding commands of}\cr
- -m; &^^{\>{-m;}} Automatically append a pseudo-semicolon to \WEB\ macro
- definitions. \[W]. ^^{pseudo-!semicolon!appending automatically}\cr
- \lstar -n &^^{\>{-n}} Set the global language to \Fortran--77.
- ^^{language!global!Fortran--77\actual\FORTRAN--77}\cr
- \lstar -n9 &^^{\>{-n9}} Set the global language to \Fortran--90.
- ^^{language!global!Fortran--90\actual\FORTRAN--90}\cr
- -n; &^^{\>{-n;}} For \Fortran--77, supply semicolons automatically.
- (Default mode.) ^^{semicolons!automatic!Fortran:\FORTRAN}\cr
- -nb &^^{\>{-nb}} In \Fortran, number the \&{if}s and \&{do}s. \[W]; \(N).
- ^^{block numbers!\Fortran}\cr
- -np &^^{\>{-np}} Print semicolons in woven \Fortran\ output. \[W].
- ^^{semicolons!printing}\cr
- -n\BS &^^{\>{-n\BS}} Select free-form \Fortran--90 syntax continued with a
- backslash. ^^{syntax!free-form!continuing with backslash}\cr
- -n\amp & ^^{\>{-n\amp}} As above, but continue with an ampersand.
- ^^{syntax!free-form!continuing with ampersand}\cr
- -n/ &^^{\>{-n/}} In \Fortran, make '\.{//}'~denote the start of
- a short comment instead of concatenation. (One can always
- use~'\.{\\/}' for concatenation.) ^^{comment!short!recognizing in
- \FORTRAN}\cr
- -n! &^^{\>{-n"!}} In \Fortran, make
- `\.!'~denote the start of a short comment instead of the logical
- \.{NOT}.\cr
- -o &^^{\>{-o}} Turn off \FWEAVE's mechanisms for overloading operators. \[W].
- ^^{operator!overloading!turning off}\cr
- \lstar -P\It{letter} &^^{\={-p}{-P}} Selects the \TeX\ processor for \FWEAVE's
- output. Say~`\.{-PL}' for \LaTeX; the default is~`\.{-PT}' for \TeX.
- \[W].
- ^^{\TeX\ processor, selecting}
- ^^{processor!\TeX} ^^{processor!\LaTeX}
- \cr
- \lstar -p\It{styleentry} &^^{\>{-p}} Buffer up a style-file entry, to be
- processed just before the local style file is read.
- ^^{style file!global entry}\cr
- -q &^^{\>{-q}} Do \It{not} translate \Ratfor\ commands into \Fortran. (No
- longer supported.) \[T]; \(R). \cr
-
- \summarize{Command-line options {\tt r}--{\tt z}}{0.7}
-
- \lstar -r &^^{\>{-r}} Set the global language to \Ratfor--77.
- ^^{language!global!Ratfor--77:\RATFOR--77}\cr
- \lstar -r9 &^^{\>{-r9}} Set the global language to \Ratfor--90.
- ^^{language!global!Ratfor--90:\RATFOR--90}\cr
- -rb &^^{\>{-rb}} In \Ratfor, number the \&{if}s and \&{do}s. \[W]; \(N).
- ^^{block numbers!\Ratfor}\cr
- -rg\It{params} &^^{\>{-rg}} Set the \&{goto} parameters for \Ratfor's
- \&{switch}. \[T]; \(R).\cr
- -rk\It{[letters]} &^^{\>{-rk}} Suppress particular comments about \Ratfor\
- statement translation. \[T]; \(R).
- ^^{Ratfor:\RATFOR!commands!deleting}\cr
- -rK\It{[letters]} &^^{\={-rk}{-rK}} As above, but write out particular
- comments. \[T]. \cr
- -r; &^^{\>{-r;}} Turns on \Ratfor's auto-semi mode, and tells it to
- use the ``obviously continued'' syntax. \(R).
- ^^{semicolons!automatic!Ratfor:\RATFOR}\cr
- -r/ &^^{\>{-r/}} In \Ratfor, make `\.{//}'~denote the start of
- a short comment instead of concatenation. (One can always
- use~'\.{\\/}' for concatenation.) \(R).
- ^^{comment!short!recognizing in \RATFOR}\cr
- -r!&^^{\>{-r"!}} In \Ratfor, make `\.!'~denote the start of a short comment
- instead of the logical \.{NOT}. \cr
- \lstar -s &^^{\>{-s}} Print statistics about memory usage. ^^{statistics}\cr
- \lstar -sm\It{[nnn]} &^^{\>{-sm}} As above, but also display the dynamic
- memory allocations of size $\ge$~\It{nnn} as they occur.
- ^^{memory, dynamic allocation of!statistics for}\cr
- \lstar -t\It{ln[\{\dots\}]} &^^{\>{-t}} Truncate identifiers of
- language~$l$ to length~$n$, after optionally filtering out the
- characters listed between the braces. \[W].\cr
- \lstar -u\It{id} &^^{\>{-u}} Undefine a predefined or command-line macro.
- \[T]. ^^{macro!outer!undefining}\cr
- -v &^^{\>{-v}} Make all comments verbatim. \[T].
- ^^{comment!verbatim!making all}\cr
- -W\It{letters} &Commands that apply only to \FWEAVE. Here \It{letters} may
- be one or more of the following:
- \clo{
- [&^^{\={-w[}{-W[}} Turn on special processing of bracketed array
- indices.\cr
- f&^^{\={-wf}{-Wf}} Don't print format statements (\.{@f}) in woven
- output.\cr
- l&^^{\={-wl}{-Wl}} As above, but for limbo statements (\.{@l}).\cr
- m&^^{\={-wm}{-Wm}} As above, but for macro definitions (\.{@m}).\cr
- v&^^{\={-wv}{-Wv}} As above, but for operator overloading
- (\.{@v}).\cr
- w&^^{\={-ww}{-Ww}} As above, but for identifier overloading
- (\.{@W}).\cr
- \noalign{\vskip-5pt}
- }\cr
- \lstar -w\It{[file\_name]} &^^{\>{-w}} If \It{file\_name}~is absent,
- don't print `\.{\\input\ fwebmac.sty}' as the first line of the
- \.{TEX} output file. Otherwise, print `\.{\\input
- \It{file}\_\It{name}}'. \[W]. ^^{\>{fwebmac}!\>{.sty}!not
- printing}\cr
- \lstar -X\It{[letters]} &^^{\={-x}{-X}} Print selected cross-reference
- information; the opposite of~`\.{-x}'.
- ^^{cross-references!suppressing}
- ^^{index!printing}
- ^^{module list!suppressing}
- ^^{table of contents!suppressing}\cr
- \lstar -x\It{[letters]} &^^{\>{-x}} Reduce or eliminate cross-reference
- information. The optional letters can be one of~'\.c',
- '\.i', '\.m', or~'\.*', referring respectively to the table of contents,
- index, module list, or all cross-reference information. \[W].
- ^^{index!not printing}\cr
- \lstar -y\It{[a[a]][nnnn]} &^^{\>{-y}} Override default for dynamic memory
- allocation. If \It{nnnn} is omitted, then
- simply query the default instead of overriding it. The simple
- command~`\.{-y}' with no argument queries everything.
- ^^{memory, dynamic allocation of!syntax}\cr
- -Z\It{[letters]}&^^{\={-z}{-Z}} Display default values of style-file parameters
- (starting with \It{letters} if present).
- ^^{style file!parameters!default values of}\cr
- \lstar -z\It{[name]} &^^{\>{-z}} Override default style-file name.
- ^^{style file!new name for}\cr
-
- \summarize{Command-line options (miscellaneous)}{0.7}
-
- -. &^^{\>{-.}} Don't recognize ``dot constants'' in \Fortran\ or \Ratfor.
- ^^{constant!dot}\cr
- -\BS &^^{\>{-\BS}} Explicitly escape continued strings.
- ^^{strings!continuing!with explicit escape}\cr
- -( &^^{\>{-(}} Continue parenthesized strings with backslashes.
- ^^{strings!parenthesized!continuing}\cr
- -:\It{[nnnnn]} &^^{\>{-":}} Set the starting automatic statement number.
- \[T]. ^^{statement!number!setting}\cr
- \lstar ->\It{[l=][name]} &^^{\>{->}} Redirect tangled output.
- ^^{output!redirection}\cr
- \lstar -= &^^{\>{-=}} Redirect tangled output. Synonymous with~`\.{->}'.
- Easy to type under \Unix.\cr
- -\# &^^{\>{-\PM}} Turn off comments about line numbers and module
- names in tangled output. \[T] ^^{line numbers!turning off}\cr
- -+ &^^{\>{-+}} Don't interpret the compound assignment operators. \[T];
- \(N,R). ^^{operators!compound assignment!not recognizing}\cr
- -/ &^^{\>{-/}} In both \Fortran\ and \Ratfor, make `\.{//}'~denote the start of
- a short comment instead of concatenation. (One can always
- use~'\.{\\/}' for concatenation.)\cr
- -! &^^{\>{-"!...}} In both \Fortran\ and \Ratfor, make
- `\.!'~denote the start of a short comment instead of the logical
- \.{NOT}.\cr
-
- \noindent These command-line options may also be put into the ini file
- \.{.fweb}.
- ^^{\>{.fweb}}
- Options beginning with a plus sign are processed \It{before} the
- command-line options. Otherwise, they are processed after the command-line
- options.
-
- {%\tracingall
- \summarize{Modules}{0.7}
- ^^[modules!summary of]
- \Item Module names are delineated by \.{@<\dots@>}.
- ^^{section name!beginning!in code}
- \Item To reference a named module in a macro definition, say
- `\.{\#<\dots@>}' instead of \atcmd{<\dots@>}.
- ^^{section name!beginning!in macro}
- \Item The unnamed module is begun by~\atcmd{A} or~\atcmd{a}. (The latter
- command inserts an implicit~\atcmd{[}.)
- \Item \FTANGLE\ outputs the unnamed module. \It{(There must be at least one
- unnamed section, otherwise there will be no output!)}
-
- \TeX\ part & \It{Arbitrary \TeX\ documentation}.\endgraf
- \medskip
- \Item Begins with~\atcmd{*} or~\atcmd{\ }.
- \Item Change to code mode with~\.{|\dots|}.\endgraf
- \cr
- definition part & \It{Macro definitions, formatting, limbo text, operator overloading, etc.}\endgraf
- \medskip
- \Item Begins with~\atcmd{m}, \atcmd{d}, \atcmd{f}, \atcmd{l}, \atcmd{v},
- or~\atcmd{\#...}.\endgraf
- \cr
- code part & \It{The source code.}\endgraf
- \medskip
- \Item Begins with~\atcmd{a} or~\atcmd{<}.
- \Item \TeX\ mode inside comments.
- \Item Ends with~\atcmd{*} or~\atcmd{\ }. (The end of file is like
- an~\atcmd{\ }.)\endgraf
- \cr
-
- \subsubsection The simplest \WEB\ sources.
-
- The absolutely simplest nontrivial \WEB\ source file is ``\.{@\ @a}''. The
- next simplest is
- ^^[\>{WEB}!source file!simplest]
-
- {\codemode
- @* EMPTY.
- @a
- \Par
- }
- \noindent These have a null definition part as well as a null code part. The
- simplest \Fortran--77 code is
-
- {\codemode
- @n
- @* FORTRAN.
- @a
- \Tab program main
- \Tab end
- \Par
- }
- \noindent The same code in \Ratfor\ is
-
- {\codemode
- @r
- @* RATFOR.
- @a
- program main
- \{\}
- \Par
- }
- \noindent The corresponding code in~C is
-
- {\codemode
- @c
- @* C.
- @a
- main()
- \{\}
- \Par
- }
-
- \summarize{Control codes allowed in \WEB\ files}{0.62} ^^[commands!control
- codes!in \>{WEB} source]
-
- \subheading{Literal control characters:}
- @@ &^^{\>{@@}} Insert the single character~\atcmd{}.\cr
- @| &^^{\>{@"|}} Insert a vertical bar (\TeX\ text only). In code mode,
- this command means an optional line break; see the ``Spacing'' commands
- below. ^^{vertical bar, literal}\cr
- \subheading{Beginning of module:}
- @\.\ &^^{\>{@\ }} Begin a new minor
- (unstarred) module. ^^{module!beginning!unstarred} \cr
- @*\It{[n]} &^^{\>{@*}} Begin a new major (starred) module of level~$n$.
- ^^{module!beginning!starred} \cr
- \subheading{Beginning of code part:}
- @< &^^{\>{@<...@>}} ^^{\>{@<}} Begin a module name.
- ^^{module!name!beginning} \cr
- @> &^^{\>{@>}} End a module name. ^^{module!name!ending} \cr
- \medalign
- @A &^^{\={@a}{@A}} Begin the code part of an unnamed module.
- ^^{module!part!code} \cr
- @a &^^{\>{@a}} Equivalent to `\atcmd{A@[}'.\cr
- \subheading{Control codes \.{b}--\.{z}:}
- @b &^^{\>{@b}} Insert a ^{breakpoint command} in a \WEB\ module.\cr
- \medalign
- @c &^^{\>{@c}} Set the language to~C. ^^{language!setting!C}\cr
- @c++ &^^{\>{@c++}} Set the language to~\Cpp. ^^{language!setting!\Cpp}\cr
- \medalign
- @D &^^{\={@d}{@D}} Define an outer macro. ^^{macro!outer!defining}\cr
- @d &^^{\>{@d}} Equivalent to `\atcmd{D@[}'.\cr
- \medalign
- @e &^^{\>{@e}} Invisible (pseudo-) expression.\cr
- @f &^^{\>{@f}} Format an identifier or module name.
- ^^{formatting!identifiers} ^^{formatting!module names}\cr
- \medalign
- @I &^^{\={@i}{@I}} Include a file, but don't print it out if the \.{-i}~option
- is used.\cr
- @i &^^{\>{@i}} Include a file. ^^{file!including}\cr
- \medalign
- @L$l$ &^^{\={@l}{@L{\it l}}} Set language to~$l$. ^^{language!setting}\cr
- @l &^^{\>{@l}} Specify limbo text. ^^{limbo!text}\cr
- \medalign
- @M &^^{\={@m}{@M}} Define a \WEB\ macro. ^^{macro!inner!defining}\cr
- @m &^^{\>{@m}} Equivalent to `\atcmd{M@[}'.\cr
- \medalign
- @n &^^{\>{@n}} Set the language to \Fortran--77.
- ^^{language!setting!Fortran--77:\FORTRAN--77}\cr
- @n9 &^^{\>{@n9}} Set the language to \Fortran--90.
- ^^{language!setting!Fortran--90:\FORTRAN--90}\cr
- \medalign
- @O &^^{\>{@O}} Open new output file (global scope).
- ^^{file!output!opening new}\cr
- @o &^^{\>{@o}} Open new output file (local scope).
- ^^{file!output!opening new}\cr
- \medalign
- @r &^^{\>{@r}} Set the language to \Ratfor--77.
- ^^{language!setting!Ratfor--77:\RATFOR--77}\cr
- @r9 &^^{\>{@r9}} Set the language to \Ratfor--90.
- ^^{language!setting!Ratfor--90:\RATFOR--90}\cr
-
- \summarize{Control codes allowed in \WEB\ files, cont'd}{0.62}
-
- @u &^^{\>{@u}} Undefine an outer macro. ^^{macro!outer!undefining}\cr
- \medalign
- @v &^^{\>{@v}} Overload an operator. ^^{operators!overloading}\cr
- @W &^^{\>{@W}} Overload an identifier. ^^{identifiers!overloading}\cr
- \medalign
- @x &^^{\>{@x}} Terminates ignorable material (begun by~\atcmd{z} at beginning
- of source or include file). ^^{ignorable material!terminating}\cr
- @z &^^{\>{@z}} Begins ignorable material at beginning of source or include
- file. ^^{ignorable material!beginning}\cr
- \subheading{Conversion to ASCII:}
- @' &^^{\>{@'}} Convert single character to ASCII.
- ^^{ASCII!converting to}\cr
- @" &^^{\>{@""}} Convert string to ASCII. (In \Fortran\ or \Ratfor, generate
- a call to the function named by the style-file field \.{ASCII\_fcn}.)
- ^^{ASCII!converting to}\cr
- \subheading{Markers for forward referencing:}
- @[ &^^{\>{@[}} Mark the next identifier as defined in this module.
- ^^{identifiers!marking as defined}\cr
- @] &^^{\>{@]}} \It{Reserved}; do not use.\cr
- @` &^^{\>{@`}} \It{Reserved}; do not use.\cr
- \subheading{Comments:}
- @/* &^^{\>{@/}} Begin a long verbatim comment. ^^{comment!long!beginning}\cr
- @// &^^{\>{@/}} Begin a short verbatim comment.
- ^^{comment!short!beginning}\cr
- @\% &^^{\>{@\PC}} An ignorable comment: Everything to the next newline is
- completely ignored. ^^{comment!ignorable}\cr
- @? &^^{\>{@?}} Begin a compiler directive. ^^{compiler
- directives!beginning}\cr
- @! &^^{\>{@"!}} Begin a compiler directive (obsolete). ^^{compiler
- directives!beginning}\cr
- @( &^^{\>{@(}} Begin a meta-comment. ^^{comment!meta-!beginning}\cr
- @) &^^{\>{@)}} End a meta-comment. ^^{comment!meta-!ending}\cr
- \subheading{Special brace:}
- @\{ &^^{\>{@\LB}} Suppress default insertion of breakpoint command.
- ^^{breakpoint command!suppressing insertion of}\cr
- \subheading{Index entries:}
- @\UL &^^{\>{@\UL}} Force an index entry to be underlined.
- ^^{index!entry!underlining} \cr
- @- &^^{\>{@-}} Delete an index entry for the next identifier.
- ^^{index!entry!deleting}\cr
- \medalign
- @\^ &^^{\>{@\^}} Make an index entry in Roman type. ^^{index!entry!Roman
- type}\cr
- @. &^^{\>{@.}} Make an index entry in \.{typewriter} type.
- ^^{index!entry!typewriter type}\cr
- @9 &^^{\>{@9}} Make an index entry in a format controlled by `\.{\\9}',
- which the user must define.
- ^^{index!entry!user-controlled format}\cr
- \subheading{Control text:}
- @t &^^{\>{@t}} Put control text into a \TeX\ \.{\\hbox}.
- ^^{text!control!putting into hbox}\cr
- @= &^^{\>{@=}} Pass control text verbatim to the output.
- ^^{text!control!passing verbatim to output}\cr
-
- \summarize{Control codes allowed in \WEB\ files, cont'd}{0.62}
-
- \subheading{Spacing:}
- @, &^^{\>{@,}} Insert a thin space. ^^{insertion!thin space}\cr
- @/ &^^{\>{@/}} Insert a line break. ^^{insertion!line break}\cr
- @| &^^{\>{@"|}} Insert an optional line break in an expression.
- ^^{insertion!optional line break}\cr
- @\# &^^{\>{@\PM}} Force a line break with some extra white space; very
- seldom necessary, since blank lines in the source are significant. Also
- begin a preprocessor command. ^^{insertion!line break!with white space}\cr
- @+ &^^{\>{@+}} Cancel a line break. ^^{insertion!line break!cancelling}\cr
- @\amp &^^{\>{@\amp}} Join left and right with no spaces or line breaks
- inbetween. ^^{joining}\cr
- \subheading{Pseudo (invisible) operators:}
- @e & Invisible (pseudo-) expression. ^^{pseudo-!expression}\cr
- @; &^^{\>{@;}} Invisible (pseudo-) semicolon. ^^{pseudo-!semicolon}\cr
- @: &^^{\>{@":}} Invisible (pseudo-) colon. ^^{pseudo-!colon}\cr
-
- }
-
- \subsubsection Special format for language changes.
-
- The most general form of a language command is
-
- {\codemode
- @\It{[}L\It{]}\It{l}\math\,\math\It{text}[\It{options}]
- \Par
- }
- \noindent where $l$~is a language symbol, \It{text} is converted into a
- hyphenated option, and \It{options} have the same syntax as on the command
- line. For example,
-
- {\codemode
- @n9[-n&]
- \Par
- }
- \noindent means set the language to \Fortran--90 and use free-form syntax
- with the ampersand as the continuation character.
-
- \summarize{Control codes allowed in change files}{0.62}
- ^^[change file!control codes] ^^[commands!control codes!in change file]
- The folllowing commands are allowed in change files. They \It{must} begin in
- column~1. Any line that does not begin with one of these commands is a comment.
-
- @x &^^{\>{@x}} Begin a change file entry.\cr
- @y &^^{\>{@y}} End the old code; begin the replacement code.\cr
- @z &^^{\>{@z}} End the change file entry.\cr
- \medalign
- @c &^^{\>{@c}} Set language to~C.^^{language!changing}\cr
- @c++ &^^{\>{@c++}} Set language to~\Cpp.^^{language!changing}\cr
- @n &^^{\>{@n}} Set language to \Fortran--77.\cr
- @n9 &^^{\>{@n9}} Set language to \Fortran--90.\cr
- @r &^^{\>{@r}} Set language to \Ratfor--77.\cr
- @r9 &^^{\>{@r9}} Set language to \Ratfor--90.\cr
- @L\It{l} &^^{\={@l}{@L{\it l}}} Set language to~$l$.\cr
- \medalign
- @[ &^^{\>{@[}} Switch into code mode. (Use for column-oriented language
- such as \Fortran--77.)^^{code!mode}\cr
- @] &^^{\>{@]}} Switch out of code mode.\cr
-
- \subsubsection The null change file.
- ^^[change file!null] ^^[file!null]
-
- When no change file is specified on the command line, the \WEB\ processors
- attempt to open and read from the so-called ``null file.'' (This file may or
- may not actually exist in the directory structure, depending on the
- system.) The name of
- this file, which is permanently empty, depends on the operating system and
- becomes the default value of
- the style-file option \.{null\_file} according to the following table:
- $$\vbox{\offinterlineskip
- \halign{\vrule\vrule#&\strut\quad#\quad\hfil&\vrule#&\hfil\quad\tt#\quad\hfil
- &\vrule\vrule#\cr\tablerule\tablerule
- &\It{Operating system}&&\It{Name of null file}&\cr
- \tablerule\tablerule
- &IBM/PC&&nul&\cr\tablerule
- &IBM/MVS&&'NULLFILE'&\cr\tablerule
- &VAX/VMS&&nl:&\cr\tablerule
- &\Unix\ or other&&/dev/null&\cr\tablerule\tablerule
- }}$$
- Usually you must do nothing explicitly to access the null file. However,
- if \FWEB\ can't find the default null file on your system, just create an
- empty file whose name is \It{null\_name} and insert into the style file the
- line ``\.{null\_file "}\It{null\_name}\.{"}''.
-
- \summarize{Commenting modes}{0.75}
- ^^[commenting style]
- ^^[mode!commenting] ^^{\CS{cmntfont}} ^^{\CS{tenrm}}
- \FWEB\ allows a variety of commenting styles. The visible comments are in
- the font \.{\\cmntfont}, which defaults to~\.{\\tenrm}.
-
- \subheading{Invisible comments:}
- @z...@x &^^{\>{@z}} ^^{\>{@x}} If a source or include file begins
- with~\atcmd{z}, then all material is skipped until and including a line
- beginning in column~1 with~\atcmd{x}.\cr
- @\% &^^{\>{@\PC}} All material until and including the next newline is
- completely ignored.\cr
- \subheading{Visible comments:}
- /*...*/ &^^{\>{/*...*/}} A long comment (may extend over several lines).
- ^^{comment!long}\cr
- //... &^^{\>{//...}} A short comment (terminated by next newline).
- ^^{comment!short}
- (In \Fortran\
- or \Ratfor, this must be turned on explicitly with one of the command-line
- options~`\.{-n/}', `\.{-r/}', or~`\hbox{\.{-/}}'.)\cr
- !... &^^{\>{"!...}} A short comment in \Fortran\ or \Ratfor. This must be
- turned
- on explicitly with one of the command-line options~`\.{-n!}', `\.{-r!}',
- or~`\.{-!}'.\cr
- !!... &^^{\>{"!"!...}} A short comment in \Fortran\ or \Ratfor.\cr
- @(...@) &^^{\>{@(}} A meta-comment. The material between~\atcmd{(}
- and~\atcmd{)} is typeset in a verbatim environment, and is appropriately
- passed to the tangled output. (See the style-file parameters \.{meta.*}.)
- ^^{comment!meta-}\cr
-
- \subsubsection Alternatives for `dot' commands in \Fortran\ and \Ratfor.
- ^^{input!alternative operators for}
-
- Although \Fortran\ and \Ratfor\ allow standard `dot' commands such
- as~`\.{.LT.}', they are considered to be obsolete; more modern alternatives
- are preferred.
- \input dots
-
- \subsubsection Considerations about formatting.
- ^^{formatting}
-
- The construction
-
- {\codemode
- @f \It{identifier} \It{old\_identifier}
- }
- \medskip
- \noindent makes \It{identifier} behave like \It{old\_identifier}.
-
- The \It{old\_identifier} may be one of the following special names,
- which insert extra spaces according to the positions of the underscores and
- behave as the part of speech indicated by the base names. These are useful
- for dealing with macro constructions.
-
- {\codemode
- $_BINOP_
- $_COMMA_
- $_EXPR
- $_EXPR_
- $EXPR_
- $UNOP_
- }
-
- When the current language is \.{TEX}, the format command can be used to
- change a category code according to the format
-
- {\codemode
- @f `\It{\TeX char} \It{new\_cat\_code}
- }
-
- \summarize{Macro commands}{0.7}
- ^^[macros!command summary]
- Outer macros, defined by~\.{@d}, ^^{\>{@d}}
- are copied to the beginning of the output
- file. Inner \WEB\ macros are defined by~\.{@m}. ^^{\>{@m}}
- \WEB\ macro definitions in
- the definition section are collected at the beginning of the unnamed
- module. \WEB\ macro definitions in the code section (deferred definitions)
- become known when they are encountered while the code is being output.
- \medskip
- \WEB\ macro definitions have one of the following three forms:
- $$\def\args{{\tt(}args{\tt)} }
- \tt\eqalignno{
- \llap{@m } &\hbox{\it name\args text}\cr
- \llap{@m* } &\hbox{\it name\args text}\cr
- \llap{@m[bfimps*] } &\hbox{\it name\args text}\cr
- }$$
- In the second form,
- the asterisk means that the macro may be recursive, ^^{macro!recursive}
- although \It{this feature is not implemented yet}. In the third form,
- which is useful only for \Ratfor, ^^{\>{\Ratfor}}
- the brackets means that the contents of this macro
- are to be inserted automatically at the beginning of the type of program
- unit identified by the characters within the brackets. ^^{automatic insertion}
- ^^{insertion!automatic}
- See the text for more information.
- \medskip
- Macros with a variable number of arguments are indicated by an
- ellipsis ^^{ellipsis "(\noexpand\dots")}, as
- in `\atcmd{m\ VAR(x,y,z,...)\ \It{text}}'.
- \medskip
- Adjacent strings in macro text are automatically concatenated.
- ^^{strings!concatenating}
- \medskip
- The following special tokens can be used in the text of \WEB\ definitions.
- Here \It{parameter} means a dummy argument in the argument list of a
- function-like macro.
-
- \subheading{ANSI C-compatible tokens:}
- \#\# &^^{\>{\PM\PM}} Paste together tokens to left and right.
- (ANSI~C-compatible.) ^^{token pasting}
- \cr
- \#\It{parameter} & Convert parameter to string, without expansion.
- (ANSI~C-compatible.) ^^{stringizing}
- \cr
- \subheading{Extensions to ANSI~C macro syntax:} ^^{extensions!to ANSI C
- macro syntax}
- \#*\It{parameter} &^^{\>{\PM*}} As above, but pass a quoted string through
- unchanged.\cr
- \#!\It{parameter} &^^{\>{\PM"!}} Don't expand argument.\cr
- \#'\It{parameter} &^^{\>{\PM'}} Convert parameter to a single-quoted
- string, without expansion.\cr
- \#"\It{parameter} &^^{\>{\PM""}} Convert parameter to a double-quoted
- string, without expansion.\cr
- \#0 & ^^{\>{\PM0}} The number of variable arguments.
- ^^{macro!arguments!number of}
- \cr
- \#\It{n} & ^^{\>{\PM}$n$} The $n^{\rm th}$ variable argument, counting
- from~1.\cr
- \#\{0\} & ^^{\>{\PM\LB0\RB}} Like~\.{\#0}, but the argument may be a macro or
- expression known at output time.\cr
- \#\{\It{n}\} & ^^{\>{\PM\LB$n$\RB}} Like~\.{\#$n$}, but the argument may be an
- expression.\cr
- \#[0] & ^^{\>{\PM[0]}} The total number of arguments (fixed plus
- variable). (The argument may be an expression.)\cr
- \#[\It{n}] & ^^{\>{\PM[$n$]}} The $n^{\rm th}$ argument (including the
- fixed ones), counting from~1. (The argument may be an expression.)\cr
- \#. & ^^{\>{\PM.}} A comma-separated list of all variable arguments.\cr
- \#:0 &^^{\>{\PM":}} Unique statement number (expanded during phase~1).\cr
- \#:\It{nnn} & Unique statement number for each invocation of this macro
- (expanded during phase~2).
- ^^{statement!number}
- \cr
- \#< &^^{\>{\PM<...@>}} Begin a section name. (Ends with~\atcmd{>}.)
- ^^{section name!beginning!in macro}
- \cr
- \#, &^^{\>{\PM,}} An ``internal'' comma; does not delimit the end of an
- argument.
- ^^{commas!as delimiters of macro arguments}
- ^^{commas!as part of a macro argument}
- \cr
-
- {%\tracingall
- \summarize{Preprocessor commands}{0.7}
- ^^[commands!preprocessor!summary] ^^[preprocessing]
- \WEB\ preprocessor commands may appear in either the definition or the code
- part. But \It{beware}: No matter where they appear, they are expanded
- during \It{input}, not output.
-
- @\#define \Identifier\ &^^{\>{@\PM define}} Define a \WEB\ macro; equivalent
- to \atcmd{m}. ^^{\>{@m}} \cr
- @\#undef \Identifier\ &^^{\>{@\PM undef}} Undefine a \WEB\ macro.\cr
- \medalign
- @\#ifdef \Identifier\ &^^{\>{@\PM ifdef}} Is \WEB\ macro defined? Equivalent to
- `\.{\If{} defined \Identifier}'.\cr
- @\#ifndef \Identifier\ &^^{\>{@\PM ifndef}} Is \WEB\ macro not defined?
- Equivalent to `\.{\If{} !defined \Identifier}'.\cr
- \medalign
- @\#if \expr^^{\>{@\PM if}}\cr
- @\#elif \expr^^{\>{@\PM elif}}\cr
- @\#else^^{\>{@\PM else}}\cr
- @\#endif^^{\>{@\PM endif}}\cr
-
- \summarize{Built-in \FWEB\ macros (A--K)}{0.55}
- ^^[macros!built-in!summary of]
- Built-in macros are expanded during output while processing the code part.
- They all begin with an underscore and are in upper case.
- \It{User-defined macros should not
- begin with an underscore or a dollar sign.} In the following argument lists,
- \It{string} means a character string that should be surrounded
- by quotes. In a few cases the quotes are optional if the argument is a
- single alphanumeric identifier, but don't use this property unless you
- really have to.
-
- \_A(\It{string}) &^^{\>{\UL A}} The built-in equivalent to~\.{@'\dots'}
- or~\.{@"\dots"}. (Note the extra parentheses required by the built-in.)
- ^^{\>{@'}} ^^{\>{@""}}\cr
- \_ABS(\expr) &^^{\>{\UL ABS}} Absolute value of \expr.\cr
- \_ASSERT(\expr) &^^{\>{\UL ASSERT}} Evaluates \expr; if false, prints an error
- message and aborts.\cr
- \_COMMENT(\It{string}) &^^{\>{\UL COMMENT}} Generate a comment in the output
- file.\cr
- \_DATE &^^{\>{\UL DATE}} A string consisting of the date in the form
- \.{"August\ 15,\ 1989"}.\cr
- \_DAY &^^{\>{\UL DAY}} A string consisting of the day of the week in the form
- \.{"Monday"}.\cr
- \_DECR(N) &^^{\>{\UL DECR}} Decrement a macro.\cr
- \_DEFINE(defn) &^^{\>{\UL DEFINE}} Deferred macro definition.\cr
- \_DO(\It{macro},\It{imin},\It{imax}\It{[,$\Delta i$]}\{\dots\} &^^{\>{\UL
- DO}} Repetitively defines \It{macro} as would the \Fortran\ \&{do}~loop
- \.{do \It{macro} = \It{imin},\It{imax},$\Delta i$}.\cr
- \_DUMPDEF($m_1$,$m_2$,\dots) &^^{\>{\UL DUMPDEF}} Here $m_1$, $m_2$, etc.\
- are macro calls (with argument list if appropriate). The macro definitions
- and their expansions are dumped to the terminal.\cr
- \_ERROR(\It{string}) &^^{\>{\UL ERROR}} Send \.{string} to the standard error
- message facility.\cr
- \_EVAL(\expr) &^^{\>{\UL EVAL}} Evaluate a macro expression.\cr
- \_GETENV(\It{name}) &^^{\>{\UL GETENV}} Returns the present value of the
- environment variable \It{name}.^^{variable!environment}\cr
- \_HOME &^^{\>{\UL HOME}} The user's home directory; equivalent to
- \.{\_GETENV(HOME)}.\cr
- \_IF(\expr,$t$,$f$) &^^{\>{\UL IF}} Evaluates \expr. If true, returns~$t$;
- otherwise, returns~$f$.\cr
- \_IFCASE(\It{expr},\It{case\_0},\dots,\It{case\_n},\It{dflt})
- &^^{\>{\UL IFCASE}} Evaluates \It{expr} to an integer~$m$. If $0 \le m \le n$,
- then \It{case\_m} is selected. Otherwise, the \It{dflt} is
- selected.\cr
- \_IFDEF(\It{macro},$t$,$f$) &^^{\>{\UL IFDEF}} If \It{macro} is defined,
- returns~$t$; otherwise, returns~$f$.\cr
- \_IFNDEF(\It{macro},$t$,$f$) &^^{\>{\UL IFNDEF}} As above, but returns~$t$ if
- not defined.\cr
- \_IFELSE(s1,s2,$t$,$f$) &^^{\>{\UL IFELSE}} Compares \.{s1} to \.{s2}. If
- identical, returns~$t$; otherwise, returns~$f$.\cr
- \_INCR(N) &^^{\>{\UL INCR}} Increment a macro.\cr
- \_INPUT\_LINE &^^{\>{\UL INPUT\UL LINE}} Line number (in \WEB\ source file)
- that begins current section.\cr
-
- \summarize{Built-in \FWEB\ macros (L--Z)}{0.55}
-
- \_L(\It{string}) &^^{\>{\UL L}} Changes \It{string} to lower case.\cr
- \_LANGUAGE &^^{\>{\UL LANGUAGE}} An identifier such as~`\.{\_C}'
- ^^{\>{\UL C}} ^^{\>{\UL CPP}}
- ^^{\>{\UL N}} ^^{\>{\UL N90}}
- ^^{\>{\UL R}} ^^{\>{\UL R90}}
- ^^{\>{\UL X}}
- depending on the current language. (See the table below under
- \.{\_LANGUAGE\_NUM}.) Intended
- to be used with an \.{\_IFELSE}.\cr
- \_LANGUAGE\_NUM &^^{\>{\UL LANGUAGE\UL NUM}} An integer according to the
- following table; intended to be used with an \.{\_IFCASE}.
- \endgraf
- \LANBUILTINS\cr
- \_LEN(string) &^^{\>{\UL LEN}} Length of (unexpanded) argument interpreted as a
- character string.\cr
- \_M(defn) &^^{\>{\UL M}} Equivalent to \.{\_DEFINE}.\cr
- \_MAX($a$,$b$) &^^{\>{\UL MAX}} Maximum of the two expressions~$a$ and~$b$.\cr
- \_MIN($a$,$b$) &^^{\>{\UL MIN}} Minimum of~$a$ and~$b$.\cr
- \_MODULE\_NAME &^^{\>{\UL MODULE\UL NAME}} Name of present \WEB\ module.\cr
- \_MODULES &^^{\>{\UL MODULES}} The total number of \It{independent} modules:
- namely, the total number of independent module names, plus~1 for the
- unnamed module.\cr
- \_OUTPUT\_LINE &^^{\>{\UL OUTPUT\UL LINE}} Current line number of tangled
- output.\cr
- \_P &^^{\>{\UL P}} The C~preprocessor symbol~'\.{\#}'; a synonym for
- ``\.{\_UNQUOTE("\#")}''.\cr
- \_POW($x$,$y$) &^^{\>{\UL POW}} Exponentiation: $x^y$.\cr
- \_ROUTINE &^^{\>{\UL ROUTINE}} In \Ratfor\ mode, expands to a string built of
- the name of the current program, function, or subroutine; not useful for other
- languages, for which it expands to the empty string.\cr
- \_SECTION\_NUM &^^{\>{\UL SECTION\UL NUM}} Number of current \WEB\ section.\cr
- \_SECTIONS &^^{\>{\UL SECTIONS}} The maximum section number as understood
- by \WEAVE.\cr
- \_STRING(s) &^^{\>{\UL STRING}} Expands its argument, then stringizes it
- according to~\.{\#*}.\cr
- \_STUB(name) &^^{\>{\UL STUB}} References to undefined modules
- ^^{modules!undefined}
- are automatically replaced by a call to this macro, with the module
- name as argument.\cr
- %\_SWITCH() &^^{\>{\UL SWITCH}} \It{Not implemented yet}.\cr
- \_TIME &^^{\>{\UL TIME}} A string consisting of the local time in the form
- \.{"19:59"}.\cr
- \_TRANSLIT(\It{string},\It{from},\It{to}) &^^{\>{\UL TRANSLIT}} Interprets
- all arguments as
- character strings; replaces the \\{from} characters in~\\{s} by the
- corresponding \\{to}~characters.\cr
- \_U(\It{string}) &^^{\>{\UL U}} Changes \It{string} to upper case.\cr
- \_UNDEF(\It{macro}) &^^{\>{\UL UNDEF}} Undefine a macro.\cr
- \_UNQUOTE(\It{string}) &^^{\>{\UL UNQUOTE}} Returns \It{string},
- without the surrounding quotes. \cr
- \_VERBATIM(\It{string}) &^^{\>{\UL VERBATIM}} Obsolete name for
- \.{\_UNQUOTE}.\cr
- \_VERSION &^^{\>{\UL VERSION}} A string built out of the \.{FWEB} version
- number---e.g., \hbox{\.{"\FWEBversion"}}.\cr
-
- }
-
- \summarize{Ratfor\ commands}{0.5}
- ^^[Ratfor:\RATFOR!commands!summary of]
- Select \Ratfor--77 with~\atcmd{r} or~\atcmd{r7}; select \Ratfor--90
- with~\atcmd{r9}.
- Disable \Ratfor\ statement translation with command-line option~`\.{-q}'
- (obsolete). In all cases, the construction~$\stmt$ can be replaced by a simple
- statement terminated by a semicolon.
- ^^{\>{-q}}
- \endgraf
-
- \subheading{Ratfor--77 commands:}
- break; &^^{\<{break}} Exit loop or \&{switch} immediately.\cr
- case $i$: &^^{\<{case}} Used only inside \&{switch}.\cr
- default:&^^{\<{default}} Used only inside \&{switch}.\cr
- do \dots; \stmt &^^{\<{do}} \Fortran's \&{do} statement. (The semicolon is
- required only when the \&{do} is followed by a simple statement; it is
- optional when followed by a left brace.)\cr
- else \stmt &^^{\<{else}} Used in conjunction with \&{if}.\cr
- for($a$;$b$;$c$) \stmt\ &^^{\<{for}} Execute~$a$. Test~$b$. If true,
- execute body. Execute~$c$. Test~$b$ again and iterate.\cr
- if(\cond) \stmt\ &^^{\<{if}} \Fortran's \&{if}\dots\&{then}.\cr
- next; &^^{\<{next}} Go to bottom of loop.\cr
- repeat \stmt\ until(\cond); &^^{\<{repeat}} Execute body. If \cond\ is
- true, iterate.\cr
- return \expr; &^^{\<{return}} Return value from function.\cr
- switch(\expr) \stmt &^^{\<{switch}} Select various cases. (Cases fall
- through unless terminated by \&{break}.)\cr
- while(\cond) \stmt\ &^^{\<{while}} If \cond\ is true, execute body of loop.\cr
- \subheading{Additional Ratfor--90 commands:}
- contains: &^^{\<{contains}} Note the colon.\cr
- interface \It{name} \stmt\ &^^{\<{interface}} Used as in \Fortran--90, but
- note the braces.\cr
- interface operator(\It{operator}) \stmt\ &As in \Fortran--90.\cr
- interface assignment(\It{assignment}) \stmt\ &As in \Fortran--90.\cr
- module \It{name} \stmt\ &^^{\<{module}} As in \Fortran--90.\cr
- private: &^^{\<{private}} Note the colon.\cr
- sequence: &^^{\<{sequence}} Note the colon.\cr
- type \It{name} \stmt; &^^{\<{type}} Note the semicolon.\cr
- where(\expr) \stmt\ &^^{\<{where}} \Fortran--90 array operations; may be
- followed by an optional \&{else} clause.\cr
-
- Caviats and nuances about \FWEB\ \Ratfor:
- ^^[\Ratfor!caviats]
-
- \newfeature
- \feature: Numeric statement labels must be followed by a colon; they should
- be first on their line.
-
- \feature: The quoting convention for characters and strings follows that
- of~C: Single-quote single characters, double-quote strings.
-
- \feature: In a \&{switch}, cases fall through to the next case unless
- terminated by \&{break} (just as in~C).
-
- \feature: The \&{do} statement must be terminated by a semicolon if
- followed by a simple statement. (It's unnecessary if followed by a left
- brace that begins a compound statement.)
-
- \feature: Use \.{\&\&} and~\.{||} for the logical AND and OR.
-
- \feature: Do not use an \&{end} statement at the very end of a program
- unit; it is added automatically when the closing brace is sensed.
-
- \def\TEXTs{sample\BS\_id}\def\TEXT{sample\_id}
-
- \summarize{Code mode and the principal {\tt fwebmac} typesetting macros}{0.5}
- ^^[macros!typesetting]
- The construction \.{\vertbar\dots\vertbar} signifies code mode; ^^{code!mode}
- it may be used in \TeX\ text
- (including comments and module names) to typeset code or identifiers
- between the bars. When code mode is used, entries are made
- in the index. Alternatively, the following macros may be used; these do
- not make entries in the index:
-
- \BS Wtypewriter\{\TEXTs\} &^^{\CS{Wtypewriter}} Typeset in typewriter
- type, such as ``\.{\TEXT}''.\cr
- \BS Wshort\{x\} &^^{\CS{Wshort}} Use for single-character identifiers,
- such as~``\|x''. (Do not use \WEB's shorthand notation~``\.{\\|x}''
- ^^{\CS{"|}}
- for this purpose, as the bar gets confused with the entry into code mode.)\cr
- \BS Wid\{\TEXTs\} &^^{\CS{Wid}} Ordinary identifiers, such as
- ``\\{\TEXT}''.\cr
- \BS Wreserved\{\TEXTs\} &^^{\CS{Wreserved}} For reserved words, such as
- ``\&{\TEXT}''.\cr
- \BS Wintrinsic\{\TEXTs\} &^^{\CS{Wintrinsic}} For intrinsic functions,
- such as ``\IF{\TEXT}''.\cr
-
- \noindent In the arguments of the above macros, you must precede the special
- characters ``\.{\ \\\#\%\$\^\{\}\~\&\_}'' by a backslash.
- \medskip
- For brevity, the above macros are equivalenced to shorter macros, as
- follows:
- \input equiv
-
- \def\acd(#1){(\.{0x#1})}
-
- \summarize{Escape sequences}{0.5}
- ^^[escape sequences]
- \FWEB\ follows ANSI~C in recognizing the following escape sequences within
- strings. (The corresponding \&{ASCII} code is in parentheses.)
-
- \BS' \acd(27) & \It{Literal apostrophe}.\cr
- \BS" \acd(22) & \It{Literal quotation mark}.\cr
- \BS?$\vphantom{a}$ \acd(3F) & \It{Literal question mark}.\cr
- \BS\BS\ \acd(5C) & \It{Literal backslash}.\cr
- \BS a \acd(07) & \It{Alert}---ring the bell or print visual alert.\cr
- \BS b \acd(08) & \It{Horizontal backspace}.\cr
- \BS f \acd(0C) & \It{Form feed}---force output device to begin a new page.\cr
- \BS n \acd(0A) & \It{Newline}---move to next line.\cr
- \BS r \acd(0D) & \It{Carriage return}---move to beginning of line.\cr
- \BS t \acd(09) & \It{Horizontal tab}---move to next tab mark.\cr
- \BS v \acd(0B) & \It{Vertical tab}---move to next tab mark.\cr
- \BS \It{NNN} & \It{Octal number}.\cr
- \BS x\It{NN} & \It{Hexadecimal number}.\cr
-
- \summarize{Conventions for \FWEAVE's identifiers}{0.7}
- Following are the interpretation of the various fonts used in the output
- produced by \FWEAVE. Subscripts mean the number of the section in which the
- identifier was defined. In the index, underlined section numbers mean the
- identifier was defined there.
-
- \subheading{Automatically-generated entries:}
- {\it italics} & An ordinary identifier such as~\|x or~\\{xyz}.\cr
- {\it mark\/}$\WIN0{90}$ & An identifier explicitly marked with~\.{@[}.\cr
- {\it name\/}$\WIN1{91}$ & A function name such as \\{main} defined in
- section~98.\cr
- {\it inner\/}$\WIN2{92}$ & A \WEB\ macro.\cr
- {\it outer\/}$\WIN3{93}$ & An outer macro.\cr
- {\bf boldface} & A reserved word such as \&{integer}.\cr
- {\bf newtype}$\WIN5{95}$ & A new type created via \&{typedef}.\cr
- {\bfit boldfaced italic} & An intrinsic function such as \IF{sin}.\cr
- {\tt TYPEWRITER} & A \Fortran\ keyword such as \.{BLOCKSIZE}. (These must
- be in upper case.)\cr
- \subheading{User-defined entries:}
- {\tt typewriter} &\.{@.\dots@>}\cr
- {\rm Roman} &\.{@\^\dots@>}\cr
- {\ss user-defined} &\.{@9\dots@>}. For example, to make an index entry in
- {\ss sans serif} type say ``\.{\\def\\9\#1\{\{\\tenss\#\}\}}''.\cr
-
- \summarize{Special array processing}{0.7}
- In \Fortran\ and \Ratfor, \FTANGLE\ replaces left and right square brackets
- (outside of strings) by left and right parentheses. Thus, brackets can be
- used for array subscripts if one desires.
- \medskip
- When the option `\.{-W[}' is used, \FWEAVE\ replaces square brackets by a
- special \TeX\ macro. To change the appearance of array indices, redefine
- the macro \.{\\WARRAY}. ^^{\CS{WARRAY}}
- For example, to subscript indices, say ``\.{\\let \\WARRAY\\WSUB}''.
- \par\par
- ^^{\CS{WSUB}}
- ^^)syntax!summary)
-
- \appendix M: CUSTOMIZING via the STYLE FILE.[][20.13.11]
-
- The default name of the style file is \.{fweb.sty}; ^^{\>{fweb.sty}}
- change that with the
- `\.{-z}'~command-line option. ^^{\>{-z}}
- \TeX-like comments (beginning with~'\.{\%}') may be included.
- An alphabetized list of the vocabulary commands may be found in the index
- under ``\.{style file, vocabulary}''.
- The command syntax is
-
- {\codemode
- \It{keyword [=] value}
- }
- \medskip
- \noindent For example,
-
- {\codemode
- LaTeX.options = "eqalign"
- }
- \medskip
-
- The style-file parameters are user-specific. The local style file
- is intended to be used for changes that are run-specific. (Contrast that
- with the initialization file \.{.fweb}, ^^{\>{.fweb}}
- which is intended to set the user's
- default environment for all runs.) Style-file parameters that are intended
- to permanently override \FWEB's defaults should be put into \.{.fweb} by
- using the `\.{+p}'~option. ^^{\>{-p}}
-
- A mechanism is also provided to aid in installation-wide customization
- ^^{customization!installation-wide}
- done when \FWEB\ is compiled. This
- is explained in the separate documentation about installation and in the
- source file \.{custom.web}. ^^{\>{custom.web}}
-
- \def\stylehook#1{\subsubsection #1.\par
- \let\subtitle\empty
- \kern-\baselineskip}
-
- \input index.stl
-
- \input modules.stl
-
- \input contents.stl
-
- \input subs.stl
-
- \input formats.stl
-
- \input wmisc.stl
-
- \input t.stl
-
- \input wtmisc.stl
-
- \input auto.stl
-
- \input colors.stl
-
- \input ccodes.stl
-
- \appendix N: MEMORY ALLOCATION.[]
-
- ^^(memory, dynamic allocation of!summary(
- The command-line option~`\.{-y}' ^^{\>{-y}} ^^{statistics}
- is used to change the default allocation
- for a dynamic memory array, as in~`\.{-ym4000}'. To query the present
- allocations of variable~\It{aa}, where \It{aa}~is the abbreviation in the
- list below, just say ``\.{-y\It{aa}}'' with no
- numeric argument. To query everything, say ``\.{-y}''.
-
- The option~`\.{-s}' ^^{\>{-s}}
- reports memory-usage statistics at the end of the run.
- The option~`\.{-sm\It{[n]}}' ^^{\>{-sm}}
- reports allocations of~$n$ or more bytes as they
- occur. If $n$~is omitted, $n = 10000$ is assumed.
- \medskip
- Here is a brief discussion \It{(not completed yet!)}
- of the dynamic arrays and their abbreviations. (For more information,
- please study the code.)
- $$\def\var#1 (#2){\\{#1}~(\.{"#2"})}
- \vbox{\halign{\var #\hfil&\ ---\
- \vtop{\hsize=0.65\hsize\noindent\hang\strut#\strut}\hfil\cr
- buf\_size (bs)&Size of the change buffer.\cr
- C\_buf\_size (cb)&Buffer size for single-character buffered output in~C.\cr
- cmd\_fmt\_size (cf)&Buffer size for certain output messages in \Ratfor.\cr
- cmd\_msg\_size (cg)&As above.\cr
- delta\_dots (d)&Number of additional entries to reallocate for the \\{dots}
- array if necessary.\cr
- line\_length (ll)&Line length for \FWEAVE's output. \cr
- longest\_name (ln)&Module names or strings shouldn't be longer than
- this.\cr
- max\_bytes (b)&Maximum number of bytes in identifiers, index entries, and
- module names.\cr
- max\_dtexts (dx)&Maximum number of deferred replacement texts.\cr
- max\_dtoks (dt)&Maximum number of tokens in \FTANGLE's deferred macro pool.\cr
- max\_expr\_chars (lx)&Maximum length of expressions for compound
- assignments.\cr
- max\_lbls (lb)&Maximum nesting level in \Ratfor.\cr
- max\_modules (m)&Must be larger than the maximum number of modules.\cr
- max\_names (n)&Maximum number of identifiers, strings, and module names.\cr
- max\_refs (r)&Maximum number of cross-references.\cr
- max\_scraps (s)&Maximum number of scraps during \FWEAVE's parsing.\cr
- max\_texts (x)&Maximum number of replacement texts for \FTANGLE.\cr
- max\_toks (tt)&Maximum number of tokens in \FTANGLE's compressed code.\cr
- max\_toks (tw)&Maximum number of tokens in current code text being parsed by
- \FWEAVE.\cr
- mbuf\_size (mb)&Size of the area into which macros are expanded. This must
- be large enough to hold all intermediate levels of expansion as well as the
- final result. Furthermore, in some complicated situations, especially in
- \Ratfor, more than one macro buffer can be open at once.\cr
- num\_files (nf)&Number of open files, especially for the \.{@o}~command.\cr
- op\_entries (op)&Size of the table that handles overloaded operators. A
- fixed table of length~128 is always used to handle operators such
- as~`\.{=}'. The
- quantity \\{op\_entries} must be greater than that amount by the number of
- new names that are explicitly overloaded.\cr
- sbuf\_len (sb)&Length of input line buffer for style file.\cr
- stack\_size (kt)&\FTANGLE's stack size.\cr
- stack\_size (kw)&\FWEAVE's stack size.\cr
- X\_buf\_size (xb)&Size of \TeX's output buffer.\cr
- }}$$
- Thus, for example, to set the maximum number of modules to be 4000, say
- ``\.{-ym4000}''.
- ^^)memory, dynamic allocation of!summary)
-
- \appendix O: CHARACTER SETS.[][19.15.2]
-
- \FWEB\ works internally with the ASCII character set. Users of some IBM
- machines may need to be familiar with the EBCDIC character set as well.
-
- \subsubsection The ASCII character set.
- ^^(character!set!ASCII(
-
- Here is the ASCII character set, shown in octal, decimal, and hexadecimal. The
- escape sequences recognized by~C and~\FWEB\ are also shown where
- appropriate. [This table is a minor modification of that given in the
- excellent book by the Mark Williams Company, {\sl ANSI~C: A Lexical Guide}
- (Prentice Hall, Englewood Cliffs, New Jersey, 1988), p.~66.]
-
- \rm\def\ANSI#1\par{\smallbreak
- $$\def\ctrl##1{$\langle${\bf ctrl--{\tt##1}}$\rangle$\ }
- \vbox{\halign{\hfil0##\unskip\qquad&\hfil##\unskip\qquad
- &\hfil0x\tt##\unskip\qquad&\hfil\tt##\unskip\qquad
- &\vtop{\hsize=0.5\hsize
- \noindent\hang\strut##\strut}\hfil\cr#1}}$$\vfill\eject}
- \ANSI
- 00 & 0 & 00 & NUL & \ctrl{@} Null character\cr
- 01 & 1 & 01 & SOH & \ctrl{A} Start of header\cr
- 02 & 2 & 02 & STX & \ctrl{B} Start of text\cr
- 03 & 3 & 03 & ETX & \ctrl{C} End of text\cr
- 04 & 4 & 04 & EOT & \ctrl{D} End of transmission\cr
- 05 & 5 & 05 & ENQ & \ctrl{E} Enquiry\cr
- 06 & 6 & 06 & ACK & \ctrl{F} Positive acknowledgement\cr
- 07 & 7 & 07 & BEL & \ctrl{G} Alert (``bell'') (\.{'\\a'})\cr
- 10 & 8 & 08 & BS & \ctrl{H} Backspace (\.{'\\b'})\cr
- 11 & 9 & 09 & HT & \ctrl{I} Horizontal tab (\.{'\\t'})\cr
- 12 & 10 & 0A & LF & \ctrl{J} Line feed (``newline'') (\.{'\\n'})\cr
- 13 & 11 & 0B & VT & \ctrl{K} Vertical tab (\.{'\\v'})\cr
- 14 & 12 & 0C & FF & \ctrl{L} Form feed (\.{'\\f'})\cr
- 15 & 13 & 0D & CR & \ctrl{M} Carriage return (\.{'\\r'})\cr
- 16 & 14 & 0E & SO & \ctrl{N} Shift out\cr
- 17 & 15 & 0F & SI & \ctrl{O} Shift in\cr
- 20 & 16 & 10 & DLE & \ctrl{P} Data link escape\cr
- 21 & 17 & 11 & DC1 & \ctrl{Q} Device control 1 (XON)\cr
- 22 & 18 & 12 & DC2 & \ctrl{R} Device control 2 (tape on)\cr
- 23 & 19 & 13 & DC3 & \ctrl{S} Device control 3 (XOFF)\cr
- 24 & 20 & 14 & DC4 & \ctrl{T} Device control 4 (tape off)\cr
- 25 & 21 & 15 & NAK & \ctrl{U} Negative acknowledgement\cr
- 26 & 22 & 16 & SYN & \ctrl{V} Synchronize\cr
- 27 & 23 & 17 & ETB & \ctrl{W} End of transmission block\cr
- 30 & 24 & 18 & CAN & \ctrl{X} Cancel\cr
- 31 & 25 & 19 & EM & \ctrl{Y} End of medium\cr
- 32 & 26 & 1A & SUB & \ctrl{Z} Substitute\cr
- 33 & 27 & 1B & ESC & \ctrl{[} Escape\cr
- 34 & 28 & 1C & FS & \ctrl{\BS} Form separator\cr
- 35 & 29 & 1D & GS & \ctrl{]} Group separator\cr
- 36 & 30 & 1E & RS & \ctrl{\^} Record separator\cr
- 37 & 31 & 1F & US & \ctrl{\_} Unit separator\cr
-
- \ANSI
- 40 & 32 & 20 & \.{\ } & Space\cr
- 41 & 33 & 21 & {!} & Exclamation point\cr
- 42 & 34 & 22 & " & Quotation mark (\.{'\\"'})\cr
- 43 & 35 & 23 & \# & Pound (sharp) sign\cr
- 44 & 36 & 24 & \$ & Dollar sign\cr
- 45 & 37 & 25 & \% & Percent sign\cr
- 46 & 38 & 26 & \amp & Ampersand\cr
- 47 & 39 & 27 & ' & Apostrophe (right quote) (\.{'\\''})\cr
- 50 & 40 & 28 & ( & Left parenthesis\cr
- 51 & 41 & 29 & ) & Right parenthesis\cr
- 52 & 42 & 2A & * & Asterisk\cr
- 53 & 43 & 2B & + & Plus sign\cr
- 54 & 44 & 2C & , & Comma\cr
- 55 & 45 & 2D & - & Hyphen (minus sign)\cr
- 56 & 46 & 2E & {.} & Period\cr
- 57 & 47 & 2F & / & Virgule (slash)\cr
- 60 & 48 & 30 & 0\cr
- 61 & 49 & 31 & 1\cr
- 62 & 50 & 32 & 2\cr
- 63 & 51 & 33 & 3\cr
- 64 & 52 & 34 & 4\cr
- 65 & 53 & 35 & 5\cr
- 66 & 54 & 36 & 6\cr
- 67 & 55 & 37 & 7\cr
- 70 & 56 & 38 & 8\cr
- 71 & 57 & 39 & 9\cr
- 72 & 58 & 3A & {:} & Colon\cr
- 73 & 59 & 3B & ; & Semicolon\cr
- 74 & 60 & 3C & $<$ & Less-than (left angle bracket)\cr
- 75 & 61 & 3D & $=$ & Equal sign\cr
- 76 & 62 & 3E & $>$ & Greater-than (right angle bracket)\cr
- 77 & 63 & 3F & {?} & Question mark (\.{'\\?'})\cr
-
- \ANSI
- 100 & 64 & 40 & {@} & At sign\cr
- 101 & 65 & 41 & A\cr
- 102 & 66 & 42 & B\cr
- 103 & 67 & 43 & C\cr
- 104 & 68 & 44 & D\cr
- 105 & 69 & 45 & E\cr
- 106 & 70 & 46 & F\cr
- 107 & 71 & 47 & G\cr
- 110 & 72 & 48 & H\cr
- 111 & 73 & 49 & I\cr
- 112 & 74 & 4A & J\cr
- 113 & 75 & 4B & K\cr
- 114 & 76 & 4C & L\cr
- 115 & 77 & 4D & M\cr
- 116 & 78 & 4E & N\cr
- 117 & 79 & 4F & O\cr
- 120 & 80 & 50 & P\cr
- 121 & 81 & 51 & Q\cr
- 122 & 82 & 52 & R\cr
- 123 & 83 & 53 & S\cr
- 124 & 84 & 54 & T\cr
- 125 & 85 & 55 & U\cr
- 126 & 86 & 56 & V\cr
- 127 & 87 & 57 & W\cr
- 130 & 88 & 58 & X\cr
- 131 & 89 & 59 & Y\cr
- 132 & 90 & 5A & Z\cr
- 133 & 91 & 5B & {[} & Left bracket\cr
- 134 & 92 & 5C & \ttBS & Backslash (\.{'\\\\'})\cr
- 135 & 93 & 5D & {]} & Right bracket\cr
- 136 & 94 & 5E & {\^} & Circumflex\cr
- 137 & 95 & 5F & \_ & Underscore\cr
-
- \ANSI
- 140 & 96 & 60 & \.{\`} & Grave (left quote)\cr
- 141 & 97 & 61 & a\cr
- 142 & 98 & 62 & b\cr
- 143 & 99 & 63 & c\cr
- 144 & 100 & 64 & d\cr
- 145 & 101 & 65 & e\cr
- 146 & 102 & 66 & f\cr
- 147 & 103 & 67 & g\cr
- 150 & 104 & 68 & h\cr
- 151 & 105 & 69 & i\cr
- 152 & 106 & 6A & j\cr
- 153 & 107 & 6B & k\cr
- 154 & 108 & 6C & l\cr
- 155 & 109 & 6D & m\cr
- 156 & 110 & 6E & n\cr
- 157 & 111 & 6F & o\cr
- 160 & 112 & 70 & p\cr
- 161 & 113 & 71 & q\cr
- 162 & 114 & 72 & r\cr
- 163 & 115 & 73 & s\cr
- 164 & 116 & 74 & t\cr
- 165 & 117 & 75 & u\cr
- 166 & 118 & 76 & v\cr
- 167 & 119 & 77 & w\cr
- 170 & 120 & 78 & x\cr
- 171 & 121 & 79 & y\cr
- 172 & 122 & 7A & z\cr
- 173 & 123 & 7B & \{ & Left brace\cr
- 174 & 124 & 7C & | & Vertical bar\cr
- 175 & 125 & 7D & \} & Right brace\cr
- 176 & 126 & 7E & $\sim$ & Tilde\cr
- 177 & 127 & 7F & DEL & Delete\cr
-
- ^^)character!set!ASCII)
-
- \subsubsection The EBCDIC character set.
-
- ^^(character!set!EBCDIC(
-
- \It{This will be completed someday.}
- ^^)character!set!EBCDIC)
-
- \appendix P: INDEX.[]
-
- The page numbers in the index for this manual can appear in a variety of
- fonts. These have the following meaning:
- $$\vbox{\halign{#\hfil&\ ---\ #\hfil\cr
- Roman&The keyword or phrase is {mentioned} here.\cr
- $\underline{\hbox{Roman}}$&$\underline{\hbox{Definition}}$ of concept or
- keyword.\cr
- {\bf boldfaced}&Reference to an entire {\bf topic}.\cr
- {\it italics}&An \It{example} is given.\cr}
- }$$
-
- ^^{type|see{fonts}}
-
- \let\underline\relax
-
- \Wcon % Print table of contents.
-